The present invention generally relates to printers and, more particularly, to a printer having a controller adapted to discover print engine status objects and method.
Printers, such as laser printers and ink jet printers, are used to image a pattern onto a print medium using, for example, toner or ink. Printers typically include a variety of hardware components for carrying out this task. Typically a printer will have a controller that is used to communicate with a print job source, such as a computer system. The print job source and the printer can be coupled directly to each other or through a network. The controller communicates print jobs received from the print job source to a print engine. The controller may reformat the print job, such as in the form of a raster image, before transmitting all or sequential portions of the print job to the print engine. The print engine is responsible for sending command signals to various hardware components of the printer to carry out the task of printing on the print medium.
Hardware components under the control of the print engine, include, for example, mechanisms to load, advance and eject the print medium, a cutter (when roll media is used as opposed to sheet media), a laser/toner assembly (for laser printers), a pen/ink cartridge assembly and associated carriage (for ink jet printers and plotters), paper trays, accessories (e.g., a stapler) and so forth.
Occasionally, printers experience a condition that reduces printer capabilities or renders the printer unable to print. Examples of such conditions include, for example, a pen that has malfunctioned, a pen that has run out of ink, a toner cartridge that is low on toner, a paper tray that is missing or is out of paper, a print media jam, etc. Often a sensor is used to detect these conditions. Upon detecting such a condition, the sensor transmits a signal to the print engine. The print engine communicates that the printer is in need of servicing to the controller. The controller, in turn, informs a user on a display local to the printer and/or by sending an appropriate signal to the print job source.
Each item of hardware in the printer and/or each sensor associated with an item of hardware (or, alternatively, groups of hardware or groups of sensors), is represented by a corresponding status object for use in logic executed by the printer or in internal printer signals. To provide as much information as possible to the user, the controller and print engine are designed to communicate meaningful information regarding hardware states by exchanging messages regarding the status objects. This means, however, that the print engine and the controller need to be fully compatible with each other and the controller needs to be preprogrammed with each of the printer""s status objects. As a result, controllers and print engines cannot be designed independently of one another.
Accordingly, there exists a need in the art for a controller that can discover print engine status objects without preprogramming for use with a specific print engine.
According to one aspect of the invention, the invention is a method of determining an arrangement of status objects forming a status tree structure used to represent hardware components contained within a printer and the status tree structure stored within a print engine of the printer. The method includes detecting a change in operational condition of one of the hardware components with a sensor; changing a state of a status object corresponding to the one of the hardware components to have an active state; transmitting a name of the status object having the changed state from the print engine to a controller; and querying the status object having the changed state for a root path of the status object with the controller.
According to another aspect of the invention, the invention is a printer system. The printer system includes a controller that communicates with a print job source and receiving a print job from the print job source; a print engine that controls hardware components of a printer to place a desired image on a print medium in response to print data received from the controller; a status tree structure stored by the print engine and having an arrangement of status objects used to represent the hardware components of the printer; and a status tree discoverer adapted to determine an arrangement of the status objects by querying a status object having a name unrecognized by the controller for a root path of the status object, the query transmitted upon receipt of the name from the print engine, the name transmitted from the print engine to the controller when a state of the status object changes to an active state in response to a change in operational condition of the hardware component associated with the status object and thereby indicating an intervention state of the printer.
According to yet another aspect of the invention, the invention is a controller for a printer. The controller includes a means to receive a print job from a print job source and transmit corresponding print data to a print engine of a printer; and means to determine an arrangement of status objects forming a status tree structure used to represent hardware components contained within the printer and the status tree structure stored within the print engine, the determining means including: means to receive a name of an active status object from the print engine; and means to query the status object for a root path of the status object.